#!/bin/ksh
# @(#)25        1.71.1.39  src/sysmgt/dsm/bin/wjava.sh, websm, r52.hsc, hsc_wsm_072804 5/24/04 11:46:53";

unset ENV

export WSMDATA=/tmp/wsmdata.$$/wsmdata
export VimDATA="$WSMDATA"


OS=`/bin/uname -s`

if [ "$OS" = "Linux" ] ; then
  HOSTNAME=/bin/hostname
else
  HOSTNAME=/usr/bin/hostname
fi

#
# check if the person is remotely logged in, set DISPLAY if yes
#
LOG_PTS=`tty | sed 's@/dev/@@'`

LOG_HOST=`who | grep "$LOG_PTS " | grep "(" | cut -f2 -d '(' | cut -f1 -d')' | cut -f1 -d':'`
if [[ -n $LOG_HOST && -z $DISPLAY ]]; then
 export DISPLAY=$LOG_HOST:0
 export WSMDISPLAY=$LOG_HOST:0
fi


#
# Set DISPLAY if not already set (see 293786) 
#
# WSMDISPLAY is used to pass value to java for remote mode
WSMDISPLAY=$DISPLAY

if [[ -z $WSMDISPLAY ]]; then
 # if no value is set, use DISPLAY for regular mode, and do
 # not use hostname b/c its faster
 # set WSMDISPLAY so remote mode will work
 export DISPLAY=":0.0"
 export WSMDISPLAY=$(${HOSTNAME})":0.0"

else
  # In remote mode, the format ":0.0" will not work, need
  # the hostname b/c client does not know display value
  a=`echo $WSMDISPLAY | cut -f1 -d:`
  if [[ -z $a ]]; then
        export WSMDISPLAY=$(${HOSTNAME})":0.0"
  fi

fi

#
# Are we running on the same machine as our display?
#
# Look for pattern: [[hostpath]:display_id]
#
hostpath=${DISPLAY%%:*}   # Everything before the first colon
localMachine=y
if [[ $hostpath != "" ]]
 then
   localAddr=`host \`hostname\` | LANG=C awk '{sub(",", "", $3); print $3}'`
   displayAddr=`host $hostpath | LANG=C awk '{sub(",", "", $3); print $3}'`
   if [[ $localAddr != $displayAddr ]]
    then
      localMachine=n  # May not be entirely true; machines can have multiple
                      # adapters.
   fi
fi

HOMEDIR=/usr/websm
export ODMDIR=/etc/objrepos

MessageLang=$(locale | grep LC_MESSAGES | sed 's/\"//g' | cut -d'=' -f2)



# set the path where the supported java version should reside
if [ "$OS" = "AIX" ] 
 then
  JAVA_PATH=/usr/java14/.private142
else
  JAVA_PATH=/opt/IBMJava
fi


if [ -d $JAVA_PATH ]
 then
   export PATH=${JAVA_PATH}/bin:${JAVA_PATH}/jre/bin:/bin:/usr/bin:/usr/sbin:${HOMEDIR}/bin:$PATH
 else
   echo "Java 1.4 is required"
   exit 1
fi

if [ "$OS" = "AIX" ] ; then
  DOC_SERVER_NAME=$(grep "^DOCUMENT_SERVER_MACHINE_NAME=" /etc/environment | sed 's/^DOCUMENT_SERVER_MACHINE_NAME=//')
  DOC_SERVER_PORT=$(grep "^DOCUMENT_SERVER_PORT=" /etc/environment | sed 's/^DOCUMENT_SERVER_PORT=//')
fi

if [ -z "$DOCUMENT_SERVER_MACHINE_NAME" ]; then
  export DOCUMENT_SERVER_MACHINE_NAME=$DOC_SERVER_NAME
fi
if [ -z "$DOCUMENT_SERVER_PORT" ]; then
  export DOCUMENT_SERVER_PORT=$DOC_SERVER_PORT
fi


# Bold fonts in double byte languages do not display well.  Need to
# set a java variable to disable this.
if [ "$OS" = "AIX" ] ; then
 case $LANG in
      ja_JP ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      Ja_JP ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      JA_JP ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      Zh_TW ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      ZH_TW ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      Zh_CN ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      ZH_CN ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      KO_KR ) JAVA2D_PURET2KRASTERIZER=1
            ;;
      ko_KR ) JAVA2D_PURET2KRASTERIZER=1
            ;;
 esac
 export JAVA2D_PURET2KRASTERIZER
fi

if [[ $WSM_DEBUG -ge 4 ]]
 then
   JAVA_OPTS="$JAVA_OPTS -DIDebug.showAll=true -DIDebug.debugClasses=*"
   JAVA_OPTS="$JAVA_OPTS -DIDebug.debugPattern=*"
fi

if [[ $WSM_DEBUG -ge 5 ]]
 then
   JCBD=true
   JAVA_OPTS="$JAVA_OPTS -DDebugCBJ=true"
fi

if [[ -n $JCBD ]]
 then
   comlib=jcbd.jar
 else
   comlib=jcb.jar
fi


#
# Current directory will be $CODEBASE
#

CODEBASE="${HOMEDIR}/codebase"
StartDir="$CODEBASE"

if [[ ! -d $StartDir ]]; then
  echo "Cannot get to codebase directory:\n	$StartDir" >&2
  exit 1
fi 

cd $StartDir

CLASSPATH="wsmdebug.jar:sslite-us.zip:sslite-ex.zip:$comlib"
CLASSPATH="${CLASSPATH}:wsmextra.jar:jhall.jar:jcchart.jar:jcswingsuite.jar"
CLASSPATH="${CLASSPATH}:taskguide:mm_snmp.jar:.:wsm.jar:habeans.jar:log.jar"
CLASSPATH="${CLASSPATH}:bundles-fw.jar:bundles.jar"
CLASSPATH="${CLASSPATH}:auiml.jar:icserver.jar"



for p in `/bin/ls pluginjars/*.jar 2>/dev/null`
 do
   CLASSPATH="${CLASSPATH}:$p"
done

#
# If sysmgtlib directory exists, add available jars
# to CLASSPATH
#
if [[ -d /opt/IBM/sysmgtlib ]]; then
  for p in `/bin/ls /opt/IBM/sysmgtlib/*.jar 2>/dev/null`
  do
    CLASSPATH="${CLASSPATH}:$p"
  done
fi

#
# allow a custom classpath
#
if [[ -f /opt/hsc/data/hmcimportenv ]]
then
. /opt/hsc/data/hmcimportenv 
fi

if [[ ! -z ${CUSTOM_CLASSPATH} ]]
then
    CLASSPATH=wsmdebug.jar:${CUSTOM_CLASSPATH}
fi

if [[ -r ${HOMEDIR}/security/tmp ]] ; then
  CLASSPATH="${CLASSPATH}:${HOMEDIR}/security/tmp"
fi

export CLASSPATH

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:"${HOMEDIR}/lib"
LIBPATH=${LD_LIBRARY_PATH}:${LIBPATH}
export LIBPATH
export LD_LIBRARY_PATH

ImageDir=${CODEBASE}/images

PATH=$PATH:${HOMEDIR}/bin

HEAP_MIN=16
HEAP_INC=4

W_HEAP_MIN_SIZE="${W_HEAP_MIN_SIZE:-$HEAP_MIN}"
W_HEAP_INC_SIZE="${W_HEAP_INC_SIZE:-$HEAP_INC}"
W_BIND_PROC="${W_BIND_PROC:-no}"

if [[ "$OS" = "Linux" ]] 
then
    STACK_OPT="-Xoss512k -Xss512k"
    PHYS_MEM=`(/usr/bin/free -mo|/bin/awk '{ if (NR == 2) print $2}') 2> /dev/null`
else
    STACK_OPT=""
    PHYS_MEM=`(LANG=C ; /usr/sbin/prtconf -m | cut -d" " -f3) 2> /dev/null`

# On a multi processor environment, limit the execution to only one processor
    if [ "$W_BIND_PROC" = "yes" ]
    then
        if [ -x /usr/sbin/bindprocessor ]
        then
            /usr/sbin/bindprocessor $$
        fi
    fi
fi

MAX_HEAP_MAX=512
if [ ! -z "$PHYS_MEM" ]
then
    (( HEAP_MAX = $PHYS_MEM / 2 ))
    if [ $HEAP_MAX -lt $HEAP_MIN ]
    then
        HEAP_MAX=$HEAP_MIN
    fi
    if [ $HEAP_MAX -gt $MAX_HEAP_MAX ]
    then
        HEAP_MAX=$MAX_HEAP_MAX
    fi
else
    HEAP_MAX=$MAX_HEAP_MAX
fi
W_HEAP_MAX_SIZE="${W_HEAP_MAX_SIZE:-$HEAP_MAX}"

JAVA_OPTS="$JAVA_OPTS $STACK_OPT \
          -Xquickstart \
          -Xmx${W_HEAP_MAX_SIZE}m \
          -Xms${W_HEAP_MIN_SIZE}m \
          -Xmine${W_HEAP_INC_SIZE}m \
          -DMessageLang=${MessageLang} \
          -Ddisplay=$WSMDISPLAY \
          -DWINDOWID=$WINDOWID"

if [[ $localMachine = "n" ]]
 then
   # Slow down the rate at which the progress bar is updated. 21,000 = update
   # every 1 second.

   JAVA_OPTS="$JAVA_OPTS -DProgBarLoop=21000"
fi

export FORCEDEFVIS=1  # Force X to use 8-bit color instead of 32. Helps for
                      # remote-X

if [[ $# -gt 0 && $1 = "-n" ]] ; then
#Don't put the command in the background
 shift
fi

# set WEBSM_ALL_PERMISSIONS_FOR_SECURE to workaround security in remote SSL mode
JAVA_OPTS="$JAVA_OPTS -DWEBSM_ALL_PERMISSIONS_FOR_SECURE=true"

if [[ $WEBSM_JAVA_DEBUG != "" ]]
 then
   webSMInstances=0
   if [[ -f /tmp/websmJavaDebugPorts ]]
    then
      webSMInstances=$(wc /tmp/websmJavaDebugPorts | awk '{print $1}')
   fi
   
   (( port=$webSMInstances+8000 ))
   echo port: $port `date` >> /tmp/websmJavaDebugPorts
   echo "Debug Port/Socket is: " + $port
   JAVA_OPTS="$JAVA_OPTS -Xdebug -Xnoagent -Djava.compiler=NONE \
             -Xrunjdwp:transport=dt_socket,server=y,address=$port,suspend=n"
fi

# Check to see if this is a NAS system, if so set system property
if [ "$OS" = "AIX" ] ; then
  /usr/bin/lslpp -cLq nas.rte.gui 2>/dev/null |cut -f2 -d":" | grep nas.rte.gui > /dev/null
  if [ "$?" = 0 ] ; then
    JAVA_OPTS="$JAVA_OPTS -DNASSYSTEM=true "
  fi
fi

if [ "$OS" = "Linux" ] ; then
JAVA_OPTS="$JAVA_OPTS $HMC_OPTIONS"
fi

if [[ -f /var/hsc/log/.DEBUG_HSC ]]
 then
   if [ -z ${LOG_FILE} ] ; then
     for p in "$@"
     do
      x="${p#com.ibm.websm.}"
      if [[ "$x" != "$p" ]]
       then
         cmd="$x"
         break
      fi
     done
     LOG_FILE=/tmp/${cmd}.log
   fi
   rm -f  ${LOG_FILE} 2>/dev/null
   touch ${LOG_FILE} 2>/dev/null
   chmod a+w ${LOG_FILE} 2>/dev/null  # Make sure other users can write in 
   if [[ -w ${LOG_FILE} ]]            # future.
    then
      exec ${JAVA_PATH}/jre/bin/java $JAVA_OPTS "$@" 2> ${LOG_FILE}
   else
      exec ${JAVA_PATH}/jre/bin/java $JAVA_OPTS "$@"
   fi
else
   exec ${JAVA_PATH}/jre/bin/java $JAVA_OPTS "$@"
fi
